-
Notifications
You must be signed in to change notification settings - Fork 7.6k
New SPI invert hardware SS function in hall-spi and SPI library #11297
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Conversation
👋 Hello UltimumControl, we appreciate your contribution to this project! 📘 Please review the project's Contributions Guide for key guidelines on code, documentation, testing, and more. 🖊️ Please also make sure you have read and signed the Contributor License Agreement for this project. Click to see more instructions ...
Review and merge process you can expect ...
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
A couple nitpicks but otherwise LGTM.
cores/esp32/esp32-hal-spi.c
Outdated
@@ -74,6 +74,7 @@ struct spi_struct_t { | |||
int8_t miso; | |||
int8_t mosi; | |||
int8_t ss; | |||
bool invert_out; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I would rename this to ss_invert
or invert_ss
to be more intuitive
cores/esp32/esp32-hal-spi.h
Outdated
@@ -97,6 +97,8 @@ void spiSSSet(spi_t *spi); | |||
void spiSSClear(spi_t *spi); | |||
|
|||
void spiWaitReady(spi_t *spi); | |||
//invert hardware SS | |||
void spiSSInvertout(spi_t *spi, bool invert); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think you can remove the out
of the function name. This will make it easier to read.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Agree with Lucas's comments, otherwise looks good.
renamed invert_out to ss_invert to be more intuitive
Removed the out from the function name spiSSInvertout.
Removed the out from the function name spiSSInvertout.
I made the recommended changes. |
This PR adds the ability to invert the logic level of the Hardware Slave Select (SS) pin for ESP32 SPI buses (HSPI/VSPI). This is critical for compatibility with hardware that expects active-high SS signals.
Backward Compatibility:
No breaking changes: Existing code using setHwCs() will default to invert_out=false (original behavior)
No Software SS Impact: Only affects hardware-controlled SS pins.
Isolation: Changes to one SPI bus (e.g., HSPI) do not affect others (e.g., VSPI).
Usage Example:
SPIClass *hspi = NULL;
setup(){
hspi = new SPIClass(HSPI);
hspi->begin();
hspi->setSSInvert(true); // Set before setHwCs();
hspi->setHwCs(true);
hspi->beginTransaction(SPISettings(SPI_CLOCK, MSBFIRST, SPI_MODE2));
}
I have tested my Pull Request on Arduino-esp32 core v3.1.3 with ESP32-S3 Board.
Related links
Some people have the same issue but with espidf. I use arduino ide so I fixed it for myself.
https://esp32.com/viewtopic.php?t=16057
https://esp32.com/viewtopic.php?t=16057